package au.com.acpfg.xml.reader; import java.io.File; import java.io.IOException; import javax.swing.Icon; import org.knime.core.data.DataCell; import org.knime.core.data.DataColumnSpec; import org.knime.core.data.DataType; import org.knime.core.data.DataValue; import org.knime.core.data.DataValueComparator; import org.knime.core.data.DataValue.UtilityFactory; import org.knime.core.data.renderer.DataValueRendererFamily; import org.knime.core.data.renderer.DefaultDataValueRendererFamily; public class XMLUtilityFactory extends UtilityFactory { private static long xml_id = 1; private static final Icon ICON = loadIcon(XMLCell.class, "xml-icon-16x16.png"); public static DataCell createCell(Object data, String id) { if (id == null) { id = "Document" + xml_id; xml_id++; } if (data instanceof File) { try { return new XMLCell((File) data, XMLCell.MAX_INCORE_XML_SIZE); } catch (Exception e) { e.printStackTrace(); } } else { return new XMLCell(data.toString()); } // hmmm... wierd data so assume missing (maybe should be null?) return DataType.getMissingCell(); } /** {@inheritDoc} */ @Override public Icon getIcon() { return ICON; } /* @Override protected DataValueRendererFamily getRendererFamily( final DataColumnSpec spec) { return new DefaultDataValueRendererFamily( ); }*/ /** {@inheritDoc} */ @Override protected DataValueComparator getComparator() { return new DataValueComparator() { /** {@inheritDoc} */ @Override protected int compareDataValues(final DataValue v1, final DataValue v2) { // TODO... XML comparison? return 0; } }; } }